#include <cstdarg>
#include <cstdint>
#include <cstdlib>
#include <ostream>
#include <new>

template<typename T = void>
struct Arc;

struct SecondNum;

template<typename T = void>
struct Vec;

extern "C" {

unsigned long long get_num_size();

Vec<Arc<SecondNum>> *create_first_num(unsigned long long num);

void put_num(unsigned long long num1, unsigned long long num2, Vec<Arc<SecondNum>> *vec);

void remove_num(unsigned long long num1, unsigned long long num2, Vec<Arc<SecondNum>> *vec);

bool check_num(unsigned long long num1, unsigned long long num2, const Vec<Arc<SecondNum>> *vec);

unsigned long long get_size(unsigned long long num1, const Vec<Arc<SecondNum>> *vec);

void del_num(Vec<Arc<SecondNum>> *vec);

} // extern "C"
